home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1997-01-29 | 5.2 KB | 176 lines |
- 10 'PROPCIRC - 17 DEC 93 rev. 27 SEP 96
- 20 IF EX$=""THEN EX$="EXIT"
- 30 CLS:KEY OFF
- 40 COLOR 7,0,5
- 50 UL$=STRING$(80,205)
- 60 U$="###,###.###"
- 70 P=3.14159
- 80 ON ERROR GOTO 180
- 90 '
- 100 '.....start
- 110 CLS:R=0:D=0:CF=0:AR=0:A=0:C=0:AC=0:B=0
- 120 COLOR 15,1
- 130 PRINT " PROPERTIES OF THE CIRCLE";TAB(61);"by George C. Murphy ";
- 140 COLOR 5,0:PRINT STRING$(80,223);
- 150 COLOR 7,0
- 160 GOTO 260
- 170 '
- 180 '.....error trap
- 190 BEEP
- 200 PRINT "You may have entered a combination of factors that ";
- 210 PRINT "is not possible.
- 220 PRINT:PRINT "Press any key to start over."
- 230 IF INKEY$=""THEN 230
- 240 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3:GOTO 100
- 250 '
- 260 '.....display text
- 270 GOSUB 1160 'text
- 280 COLOR 0,7:LOCATE 25,24
- 290 PRINT " Press 1 to RUN or 0 to EXIT.....";
- 300 COLOR 7,0
- 310 Z$=INKEY$:IF Z$=""THEN 310
- 320 IF Z$="0"THEN CLS:RUN EX$
- 330 IF Z$="1"THEN 350
- 340 GOTO 310
- 350 GOSUB 1630 'screen dump
- 360 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 370 PRINT " If you do not know the following, press <ENTER>"
- 380 PRINT UL$;
- 390 '
- 400 '.....inputs
- 410 IF R=0 THEN INPUT " ENTER: Radius of circle ";R:D=2*R:GOSUB 510
- 420 IF D=0 THEN INPUT " ENTER: Diameter of circle ";D:R=D/2:GOSUB 510
- 430 IF CF=0 THEN INPUT " ENTER: Cicumference of circle ";CF:GOSUB 510
- 440 IF AR=0 THEN INPUT " ENTER: Area of circle ";AR:GOSUB 510
- 450 IF A=0 THEN INPUT " ENTER: Angle between radials ";Q:A=Q*P/180:GOSUB 510
- 460 IF C=0 THEN INPUT " ENTER: Length of chord AB ";C:GOSUB 510
- 470 IF AC=0 THEN INPUT " ENTER: Length of arc AB ";AC:GOSUB 510
- 480 IF B=0 THEN INPUT " ENTER: Height if segment ";B:GOSUB 510
- 490 IF AC*D*CF*AR*A*R*C*B THEN 940 ELSE GOSUB 510:GOTO 400
- 500 '
- 510 '.....calculate properties
- 520 VIEW PRINT 5 TO 24:CLS:VIEW PRINT:LOCATE 5
- 530 FOR Y=1 TO 5
- 540 IF B=0 THEN IF A=P THEN B=0:GOSUB 750
- 550 IF AR=0 THEN IF R*1 THEN AR=P*R^2:D=2*R:CF=P*D
- 560 IF D=0 THEN IF R*1 THEN D=2*R
- 570 IF CF=0 THEN IF R*1 THEN CF=P*2*R
- 580 IF AC=0 THEN IF A*R THEN AC=A*R
- 590 IF A=0 THEN IF AC*R THEN A=AC/R
- 600 IF A=0 THEN IF R*C THEN Z=C/2/R:A=2*ATN(Z/SQR(-Z*Z+1))
- 610 IF R=0 THEN IF A*B THEN R=B/(1-COS(A/2))
- 620 IF R=0 THEN IF B*C THEN R=(4*B^2+C^2)/(8*B):A=2*(P-(2*(ATN((C/2)/B))))
- 630 IF C=0 THEN IF B*R THEN C=2*(SQR(2*B*R-B^2))
- 640 IF C=0 THEN IF A*R THEN C=2*R*SIN(A/2)
- 650 IF B=0 THEN IF R*C THEN B=R-0.5*(SQR(4*R^2-C^2))
- 660 IF B=0 THEN IF A*C THEN B=C/2*TAN(A/4)
- 670 IF B=0 THEN IF A*R THEN B=2*R*(SIN(A/4)^2)
- 680 IF R=0 THEN IF AR*1 THEN R=SQR(AR/P)
- 690 IF R=0 THEN IF CF*1 THEN R=CF/(2*P)
- 700 IF R=0 THEN IF A*AC THEN R=AC/A
- 710 IF A=0 THEN IF AC*B THEN GOSUB 800
- 720 IF A=0 THEN IF AC*C THEN GOSUB 870
- 730 NEXT Y:RETURN
- 740 '
- 750 IF C*1 THEN D=C:R=D/2
- 760 IF D*1 THEN C=D:R=D/2
- 770 IF R*1 THEN D=2*R:C=D
- 780 RETURN
- 790 '
- 800 '.....solve angle A by iteration if AC (arc) and B (height) known
- 810 Z=10*P/180
- 820 A=A+Z:X=A*B/(1-COS(A/2))
- 830 IF ABS(X-AC)<=X*9.99E-07 THEN RETURN
- 840 IF X<AC THEN A=A-Z:Z=Z/10
- 850 GOTO 820
- 860 '
- 870 '.....solve angle A by iteration if AC (arc) and C (chord) known
- 880 Z=10*P/180:J=2*AC/C
- 890 A=A+Z:X=A/SIN(A/2)
- 900 IF ABS(X-J)<=X*9.99E-07 THEN RETURN
- 910 IF X>J THEN A=A-Z:Z=Z/10
- 920 GOTO 890
- 930 '
- 940 '.....display data
- 950 VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
- 960 D$=" units"
- 970 PRINT " Radius / Length of radials...";USING U$;R;:PRINT D$
- 980 PRINT " Diameter.....................";USING U$;D;:PRINT D$
- 990 PRINT " Circumference................";USING U$;CF;:PRINT D$
- 1000 PRINT " Area of full circle..........";USING U$;AR;:PRINT D$;"<UNK! {FD22}>
- 1010 PRINT " Angle between radials........";USING U$;A*180/P;:PRINT "<UNK! {00F8}>"
- 1020 PRINT " Length of chord AB...........";USING U$;C;:PRINT D$
- 1030 PRINT " Length of arc AB.............";USING U$;AC;:PRINT D$
- 1040 PRINT " Height of segment............";USING U$;B;:PRINT D$
- 1050 SC=P*R^2*A/(2*P)
- 1060 SG=SC-((R-B)*C/2)
- 1070 PRINT " Area of segment..............";USING U$;SG;:PRINT D$;"<UNK! {FD22}>
- 1080 PRINT " Area of sector...............";USING U$;SC;:PRINT D$;"<UNK! {FD22}>
- 1090 PRINT UL$;
- 1100 PRINT " All calculated values are rounded of to nearest 1/1000 unit."
- 1110 PRINT UL$;
- 1120 LN=16
- 1130 GOSUB 1630
- 1140 GOTO 100
- 1150 '
- 1160 '.....text block
- 1170 TB=7 'tab for text
- 1180 PRINT TAB(TB);
- 1190 PRINT "Draw a circular clock face. Mark 3 points on the circle: A at 10"
- 1200 PRINT TAB(TB);
- 1210 PRINT "o'clock, B at 2 o'clock, C at the centre of the circle. Draw lines"
- 1220 PRINT TAB(TB);
- 1230 PRINT "from A to B, B to C, and C to A."
- 1240 PRINT UL$;
- 1250 PRINT TAB(TB);
- 1260 PRINT "The following definitions apply to this diagram:"
- 1270 PRINT TAB(TB);
- 1280 PRINT "THENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHEN"
- 1290 PRINT TAB(TB);
- 1300 PRINT "RADIAL - any line drawn between the centre of a circle and any"
- 1310 PRINT TAB(TB);
- 1320 PRINT " point on the circumference. Lines AC and BC are radials.
- 1330 PRINT TAB(TB);
- 1340 PRINT "CHORD - a straight line drawn between any two points on the"
- 1350 PRINT TAB(TB);
- 1360 PRINT " circumference. Line AB is a chord."
- 1370 PRINT TAB(TB);
- 1380 PRINT "ARC - that part of the circumference which lies between any two"
- 1390 PRINT TAB(TB);
- 1400 PRINT " points. The curved line between A and B is an arc."
- 1410 PRINT TAB(TB);
- 1420 PRINT "ANGLE - the angle in degrees between 2 radials that terminate at"
- 1430 PRINT TAB(TB);
- 1440 PRINT " the ends of a chord or arc. (angle ACB on your sketch).
- 1450 PRINT TAB(TB);
- 1460 PRINT "SECTOR - the pie shaped figure formed by two radials and the arc"
- 1470 PRINT TAB(TB);
- 1480 PRINT " joining their ends."
- 1490 PRINT TAB(TB);
- 1500 PRINT "SEGMENT - the figure formed by a chord and the shorter of the two"
- 1510 PRINT TAB(TB);
- 1520 PRINT " arcs joining the ends of the chord."
- 1530 PRINT TAB(TB);
- 1540 PRINT "HEIGHT (of segment) - the distance between the midpoints of the"
- 1550 PRINT TAB(TB);
- 1560 PRINT " arc and the chord that form a segment.
- 1570 PRINT TAB(TB);
- 1580 PRINT "DIMENSIONS can be entered in any unit of measure, as long as the"
- 1590 PRINT TAB(TB);
- 1600 PRINT " same unit is used for all dimensions.";
- 1610 RETURN
- 1620 '
- 1630 'HARDCOPY
- 1640 GOSUB 1750:LOCATE 25,2:COLOR 14,6
- 1650 PRINT " Press 1 to print screen, 2 to print screen & ";
- 1660 PRINT "advance paper, or 3 to continue.";:COLOR 7,0
- 1670 Z$=INKEY$:IF Z$="3"THEN GOSUB 1750:RETURN
- 1680 IF Z$="1"OR Z$="2"THEN GOSUB 1750:GOTO 1700
- 1690 GOTO 1670
- 1700 FOR QX=1 TO 24:FOR QY=1 TO 80
- 1710 LPRINT CHR$(SCREEN(QX,QY));
- 1720 NEXT QY:NEXT QX
- 1730 IF Z$="2"THEN LPRINT CHR$(12)
- 1740 GOTO 1640
- 1750 LOCATE 25,1:PRINT STRING$(80,32);:RETURN
-